;;;-*-lisp-*-
;;;-----------------------------------------------------------------------------
;;; Copyright (C) 1993 Christian-Albrechts-Universitaet zu Kiel, Germany
;;;-----------------------------------------------------------------------------
;;; Projekt  : APPLY - A Practicable And Portable Lisp Implementation
;;;            ------------------------------------------------------
;;; Funktion : Beschreibung der in C geschriebenen Systemfunktionen 
;;;
;;; $Revision: 1.26 $
;;; $Log: sys.def,v $
;;; Revision 1.26  1993/11/04  13:45:25  atr
;;; Die Funktionen catch-internal, unwind-protect-internal und
;;; progv-internal weiter attributiert mit dem Slot has-funs-as-args.
;;;
;;; Revision 1.25  1993/11/04  12:54:02  uho
;;; Signatur der Funktion rt::system eingefuegt.
;;;
;;; Revision 1.24  1993/10/20  10:05:27  hk
;;; values, values-list, c-fclose, c-fgetc, c-fopen, c-fputc, c-fseek,
;;; c-ftell, c-ungetc haben Seiteneffekte auf MV-Buffer bzw. Filesystem
;;;
;;; Revision 1.23  1993/10/19  11:14:58  atr
;;; Tippfehler (funcall ... :has-funs-as-args (o)) --> ( ...
;;; :has-funs-as-args (0))
;;;
;;; Revision 1.22  1993/10/19  10:40:56  atr
;;; Die Slots read- write-list und Data-effects bei der Funktion init-main
;;; auf Top gesetzt.
;;;
;;; Revision 1.21  1993/10/14  13:17:09  sma
;;; new-struct-internal durch new-struct ersetzt.
;;;
;;; Revision 1.20  1993/10/09  18:42:33  atr
;;; Die Funktion rt::throw-internal hat einen Jump-effect.
;;; Der Slot has-funs-as-args bei Funcall und apply auf (0) gesetzt.
;;;
;;; Revision 1.19  1993/09/16  14:39:05  sma
;;; Deklaration fuer raw-list-length und simple-assoc
;;;
;;; Revision 1.18  1993/08/24  11:15:22  pm
;;; erweiterungen um C-Pointer-Funktionen
;;;
;;; Revision 1.17  1993/07/27  14:06:27  atr
;;; UNKNOWN durch -1 ersetzt bei den Slots READ und WRITE-LISTS.
;;; -1 kodiert das statische Level auf dem TOP-LEVEL, imported-funs koennen nur
;;; auf globale Variablen lesend oder schreibend zugreifen.
;;;
;;; Revision 1.16  1993/07/22  08:41:34  pm
;;; Funktion zum Testen auf C-Trukturen eingehaengt
;;;
;;; Revision 1.15  1993/07/21  13:28:14  pm
;;; Weitere Eintraege fuer dass FFI, bezueglich C-Strukturen
;;;
;;; Revision 1.14  1993/07/19  15:14:55  uho
;;; Unter dem Keyword :NAME stehen in .def-Files jetzt zusaetzlich zum
;;; Namen des Moduls auch der Name der Initialisierungsfunktion und die
;;; Symbol-Base (der Name des Tabelle der Symbole im generierten Code).
;;;
;;; Revision 1.13  1993/06/30  16:42:53  hk
;;; Neue Funktionen rt::sxhash-simple-string, rt::sxhash-string und
;;; rt::combine-hash.
;;;
;;; Revision 1.12  1993/06/25  09:07:32  atr
;;; rt::make-instance-internal ist destruktiv.
;;;
;;; Revision 1.11  1993/06/17  09:03:40  hk
;;; Copyrigth Notiz eingefuegt.
;;;
;;; Revision 1.10  1993/05/23  17:44:37  pm
;;; in C geschrieben Konstruktor-, Test-
;;; und Konvertierungsfunktionen fuer die primitiven C-Typen
;;; eingehaengt
;;;
;;; Revision 1.9  1993/05/22  05:17:40  ft
;;; :data-effect -> :data-effects
;;;
;;; Revision 1.8  1993/05/21  15:11:04  atr
;;; die Slots read-list write-list und data-effects eingefuegt.
;;;
;;; Revision 1.7  1993/05/20  12:22:39  pm
;;; Weitere Eintraege fuer das FFI
;;;
;;; Revision 1.6  1993/05/12  11:35:55  hk
;;; rt::symbol-package-index eingetragen.
;;;
;;; Revision 1.5  1993/05/11  10:54:37  hk
;;; first, .., fourth, rest gestrichen.
;;;
;;; Revision 1.4  1993/05/08  18:15:30  hk
;;; rt::set-symbol-plist -> (setf symbol-plist)
;;;
;;; Revision 1.3  1993/05/03  12:10:36  pm
;;; erweiterung um einige Funktionen des FFI
;;;
;;; Revision 1.2  1993/04/29  10:29:49  ft
;;; Erweiterung um asin, acos und atan.
;;;
;;; Revision 1.1  1993/04/22  11:01:26  hk
;;; Initial revision
;;;
;;;-----------------------------------------------------------------------------

:sys T
:name "sys" "Isys" "Ssys"
:package "LISP"

:fun
(* :par-spec -1 :adr "Fmult")
(+ :par-spec -1 :adr "Fplus")
(- :par-spec -2 :adr "Fminus")
(/ :par-spec -2 :adr "Fdiv")
(/= :par-spec -2 :adr "Fnumneql")
(1+ :par-spec 1 :adr "F1plus")
(1- :par-spec 1 :adr "F1minus")
(< :par-spec -2 :adr "Flt")
(<= :par-spec -2 :adr "Fle")
(= :par-spec -2 :adr "Fnumeql")
(> :par-spec -2 :adr "Fgt")
(>= :par-spec -2 :adr "Fge")
(acos :par-spec 1)
(adjustable-array-p :par-spec 1)
(alpha-char-p :par-spec 1)
(alphanumericp :par-spec 1)
(append :par-spec -1 :data-effects :alloc )
(apply :par-spec -3 :mv-spec t :has-funs-as-args (0))
(array-has-fill-pointer-p :par-spec 1)
(array-rank :par-spec 1)
(array-total-size :par-spec 1)
(arrayp :par-spec 1)
(asin :par-spec 1)
(atan :par-spec -2)
(atom :par-spec 1)
(both-case-p :par-spec 1)
(boundp :par-spec 1)
(char-code :par-spec 1)
(char-downcase :par-spec 1)
(char-equal :par-spec -2)
(char-greaterp :par-spec -2)
(char-int :par-spec 1)
(char-lessp :par-spec -2)
(char-name :par-spec 1)
(char-not-equal :par-spec -2)
(char-not-greaterp :par-spec -2)
(char-not-lessp :par-spec -2)
(char-upcase :par-spec 1)
(char/= :par-spec -2)
(char< :par-spec -2)
(char<= :par-spec -2)
(char= :par-spec -2)
(char> :par-spec -2)
(char>= :par-spec -2)
(characterp :par-spec 1)
(compiled-function-p :par-spec 1 :adr "Ffunctionp")
(cons :par-spec 2 :data-effects :alloc)
(consp :par-spec 1)
(cos :par-spec 1)
(eq :par-spec 2)
(eql :par-spec 2)
(evenp :par-spec 1)
(fill-pointer :par-spec 1)
(floatp :par-spec 1)
(funcall :par-spec -2 :mv-spec t :has-funs-as-args (0))
(functionp :par-spec 1)
(graphic-char-p :par-spec 1)
(integer-length :par-spec 1)
(integerp :par-spec 1)
(list :par-spec -1 :data-effects :alloc)
(list* :par-spec -2 :data-effects :alloc)
(listp :par-spec 1)
(lower-case-p :par-spec 1)
(make-symbol :par-spec 1 :data-effects :alloc)
(makunbound :par-spec 1  :data-effects :dest)
(minusp :par-spec 1)
(name-char :par-spec 1)
(not :par-spec 1)
(null :par-spec 1 :adr "Fnot" )
(numberp :par-spec 1)
(oddp :par-spec 1)
(plusp :par-spec 1)
(set :par-spec 2 :write-list -1)
(simple-string-p :par-spec 1)
(simple-vector-p :par-spec 1)
(sin :par-spec 1)
(sqrt :par-spec 1)
(standard-char-p :par-spec 1)
(string-char-p :par-spec 1)
(stringp :par-spec 1)
(symbol-name :par-spec 1  :read-list -1)
(symbol-package :par-spec 1 :read-list -1 )
(symbol-plist :par-spec 1 :read-list -1 )
((setf symbol-plist) :par-spec 2 :data-effects :dest :read-list -1)
(symbol-value :par-spec 1 :read-list -1)
(symbolp :par-spec 1)
(tan :par-spec 1)
(upper-case-p :par-spec 1)
(values :par-spec -1 :mv-spec t :write-list -1)
(values-list :par-spec 1 :write-list -1)
(vectorp :par-spec 1)
(zerop :par-spec 1)

(rt::%car :par-spec 1)
(rt::%cdr :par-spec 1)
(rt::%logand :par-spec 2)
(rt::%logior :par-spec 2)
(rt::%lognot :par-spec 1)
(rt::%logxor :par-spec 2)
(rt::%rplaca :par-spec 2 :data-effects :dest)
(rt::%rplacd :par-spec 2 :data-effects :dest)
(rt::%shift-left :par-spec 2)
(rt::%shift-right :par-spec 2)
(rt::%vector-length :par-spec 1)
(rt::array-dimension-internal :par-spec 2)
(rt::array-element-type-internal :par-spec 1)
(rt::c-argc :par-spec 0)
(rt::c-argv :par-spec 0)
(rt::c-fclose :par-spec 1 :data-effects :dest)
(rt::c-fgetc :par-spec 1 :data-effects :dest)
(rt::c-file-length :par-spec 1)
(rt::c-fopen :par-spec 2 :data-effects :alloc)
(rt::c-fputc :par-spec 2 :data-effects :dest)
(rt::c-fseek :par-spec 2 :data-effects :dest)
(rt::c-ftell :par-spec 1 :data-effects :dest)
(rt::c-getenv :par-spec 1)
(rt::c-stdin :par-spec 0)
(rt::c-stdout :par-spec 0)
(rt::c-system :par-spec 1)
(rt::c-ungetc :par-spec 2 :data-effects :dest)
(rt::catch-internal :par-spec 2 :mv-spec t :has-funs-as-args (1))
(rt::ceiling-internal :par-spec 2 :mv-spec 2)
(rt::char-internal :par-spec 2)
(rt::code-char-internal :par-spec 1)
(rt::digit-char-internal :par-spec 2)
(rt::digit-char-p-internal :par-spec 2)
(rt::displace-array :par-spec 2)
(rt::expt-internal :par-spec 2)
(rt::fixnum-high-p :par-spec 2)
(rt::fixnum-low-p :par-spec 2)
(rt::float-internal :par-spec 1)
(rt::floor-internal :par-spec 2 :mv-spec 2)
(rt::init-main :par-spec 0 :adr "Imain" :write-list -1 :read-list -1 
:data-effects :alloc-dest-jump )
(rt::init-keysort :par-spec 1)
(rt::instance-ref :par-spec 2)
(rt::instance-set :par-spec 3 :data-effects :dest)
(rt::instancep :par-spec 1)
(rt::log-internal :par-spec 2)
(rt::make-array-internal :par-spec -7 :data-effects :alloc)
(rt::make-instance-internal :par-spec 1 :data-effects :dest)
(rt::make-string-internal :par-spec 2 :data-effects :alloc)
(rt::make-vector-internal :par-spec 6 :data-effects :alloc)
(rt::new-struct :par-spec 2 :data-effects :alloc)
(rt::progv-internal :par-spec 3 :mv-spec t :write-list -1 :has-funs-as-args (2))
(rt::round-internal :par-spec 2 :mv-spec 2)
(rt::row-major-aref-internal :par-spec 2)
(rt::schar-internal :par-spec 2)
(rt::set-char-internal :par-spec 3 :data-effects :dest)
(rt::set-constant-flag :par-spec 1 :data-effects :dest)
(rt::set-fill-pointer-internal :par-spec 2 :data-effects :dest)
(rt::set-row-major-aref-internal :par-spec 3 :data-effects :dest)
(rt::set-schar-internal :par-spec 3 :data-effects :dest)
(rt::set-slot-unbound :par-spec 2 :data-effects :dest)
(rt::set-struct-ref-internal :par-spec 3 :data-effects :dest)
(rt::set-svref-internal :par-spec 3 :data-effects :dest)
(rt::set-symbol-package :par-spec 2 :data-effects :dest)
(rt::setup-symbols-iterator :par-spec 2 :data-effects :dest)
(rt::shrink-vector :par-spec 2 :data-effects :dest)
(rt::simple-array-p :par-spec 1)
(rt::string-hash :par-spec 2)
(rt::sxhash-simple-string :par-spec 1)
(rt::sxhash-string :par-spec 1)
(rt::combine-hash :par-spec 2)
(rt::struct-ref-internal :par-spec 2)
(rt::struct-size :par-spec 1)
(rt::struct-type :par-spec 1)
(rt::structp :par-spec 1)
(rt::svref-internal :par-spec 2 :data-effects :dest)
(rt::symbol-package-index :par-spec 1)
(rt::throw-internal :par-spec -2 :mv-spec :JUMP :data-effects :jump)
(rt::truncate-internal :par-spec 2 :mv-spec 2)
(rt::unbound-value-p :par-spec 1 :read-list -1 )
(rt::unix-current-directory :par-spec 0 :mv-spec 2)
(rt::unix-file-mode :par-spec 1)
(rt::unix-link-mode :par-spec 1)
(rt::unix-readlink :par-spec 1 :mv-spec t)
(rt::unwind-protect-internal :par-spec 2 :mv-spec t :has-funs-as-args (0 1))

(rt::raw-list-length :par-spec 1)
(rt::simple-assoc :par-spec 2)

;; FFI
(rt::make-c-char :par-spec 1)
(rt::make-c-short :par-spec 1)
(rt::make-c-int :par-spec 1)
(rt::make-c-long :par-spec 1)
(rt::make-c-unsigned-char :par-spec 1)
(rt::make-c-unsigned-short :par-spec 1)
(rt::make-c-unsigned-int :par-spec 1)
(rt::make-c-unsigned-long :par-spec 1)
(rt::make-c-float :par-spec 1)
(rt::make-c-double :par-spec 1)
(rt::make-c-long-double :par-spec 1)
(rt::make-lisp-character :par-spec 1)
(rt::make-lisp-integer :par-spec 1)
(rt::make-lisp-float :par-spec 1)
(rt::c-char-p :par-spec 1)
(rt::c-short-p :par-spec 1)
(rt::c-int-p :par-spec 1)
(rt::c-long-p :par-spec 1)
(rt::c-unsigned-char-p :par-spec 1)
(rt::c-unsigned-short-p :par-spec 1)
(rt::c-unsigned-int-p :par-spec 1)
(rt::c-unsigned-long-p :par-spec 1)
(rt::c-float-p :par-spec 1)
(rt::c-double-p :par-spec 1)
(rt::c-long-double-p :par-spec 1)
(rt::internal-make-c-struct :par-spec 2)
(rt::internal-c-struct-p :par-spec 2)
(rt::internal-get-struct-pointer :par-spec 1)
(rt::c-struct-p :par-spec 1)
(rt::make-c-char-ptr :par-spec 1)
(rt::make-c-short-ptr :par-spec 1)
(rt::make-c-int-ptr :par-spec 1)
(rt::make-c-long-ptr :par-spec 1)
(rt::make-c-unsigned-char-ptr :par-spec 1)
(rt::make-c-unsigned-short-ptr :par-spec 1)
(rt::make-c-unsigned-int-ptr :par-spec 1)
(rt::make-c-unsigned-long-ptr :par-spec 1)
(rt::internal-make-c-struct-ptr :par-spec 1)
(rt::internal-c-struct-ptr-p :par-spec 2)

:sym
(NIL :ADR 0 :CONSTANT-VALUE :UNKNOWN)
(T :ADR 1 :CONSTANT-VALUE :UNKNOWN)

:eof

;;(acosh :par-spec 1)
;;(asinh :par-spec 1)
;;(atanh :par-spec 1)
;;(bit-vector-p :par-spec 1)
;;(boole :par-spec 3)
;;(cerror :par-spec -3)
;;(character :par-spec 1)
;;(cis :par-spec 1)
;;(clear-input :par-spec -1)
;;(clear-output :par-spec -1)
;;(complex :par-spec -2)
;;(constantp :par-spec 1)
;;(cosh :par-spec 1)
;;(decode-universal-time :par-spec -1)
;;(delete-file :par-spec 1)
;;(documentation :par-spec 2)
;;(encode-universal-time :par-spec -7)
;;(exp :par-spec 1)
;;(fceiling :par-spec -2 :mv-spec 2)
;;(ffloor :par-spec -2 :mv-spec 2)
;;(file-author :par-spec 1)
;;(file-string-length :par-spec 2)
;;(file-write-date :par-spec 1)
;;(finish-output :par-spec -1)
;;(force-output :par-spec -1)
;;(fround :par-spec -2 :mv-spec 2)
;;(ftruncate :par-spec -2 :mv-spec 2)
;;(gcd :par-spec -1)
;;(get-decoded-time :par-spec 0)
;;(get-internal-real-time :par-spec 0)
;;(get-internal-run-time :par-spec 0)
;;(get-universal-time :par-spec 0)
;;(imagpart :par-spec 1)
;;(lcm :par-spec -2)
;;(listen :par-spec -1)
;;(logbitp :par-spec 2)
;;(logcount :par-spec 1)
;;(logtest :par-spec 2)
;;(merge :par-spec -5)
;;(nintersection :par-spec -3)
;;(nset-difference :par-spec -3)
;;(nset-exclusive-or :par-spec -3)
;;(nsubstitute :par-spec -4)
;;(nsubstitute-if :par-spec -4)
;;(nsubstitute-if-not :par-spec -4)
;;(phase :par-spec 1)
;;(provide :par-spec 1)
;;(read-char-no-hang :par-spec -1)
;;(realpart :par-spec 1)
;;(rename-file :par-spec 2)
;;(require :par-spec -2)
;;(set-exclusive-or :par-spec -3)
;;(signum :par-spec 1)
;;(sinh :par-spec 1)
;;(sleep :par-spec 1)
;;(special-form-p :par-spec 1)
;;(stable-sort :par-spec -3)
;;(substitute-if :par-spec -4)
;;(substitute-if-not :par-spec -4)
;;(tanh :par-spec 1)
;;(user-homedir-pathname :par-spec -1)

;;(load :par-spec -2)
;;(applyhook :par-spec -5)
;;(compile :par-spec -2)
;;(compile-file :par-spec -2)
;;(compile-file :par-spec 1)
;;(eval :par-spec 1)
;;(evalhook :par-spec -4)
;;(make-char :par-spec 1)
